// Documento de configuracoes do sistema, desempenha funcoes de base
$.fn.extend({
    limpar: function () {
        $('.dcp_selecionada').each(function () {
            $(this).remove();
        });
    },
    aj_dcp: function () {
        $('#grade_form .dia').each(function () {
            valores = Array();
            $(this).attr('id') + ' ' + $(this).find('.dcp_selecionada').each(function () {
                valores.push($(this).attr('data-co-dcp'));
            });
            $(this).find('.ih').val(valores.join(','));
        });
    },
    ch_dcp: function () {
        // fecha a janela modal
        $.fancybox.close();
        dcp_target = $(".fancybox-inner").attr('data-id-origem');
        dcpDetail = new Array;
        dcpDetail['professor'] = $('.no_prof').html();
        dcpDetail['disciplina'] = $('.no-dcpi').html();
        dcpDetail['turma'] = $('.no-dcpi').attr('data-co-dcp');
        dcp_text = '<span class="remove-dcp">x</span><span class="no-dcp">' + dcpDetail['disciplina'] + '</span>' +
                '<span class="professor">' + dcpDetail['professor'] + '</span>';
        // cria um novo item na lista com o nome da disciplina
        dcp = $('<li>', {
            title: 'Clique para remover esta disciplina.',
            class: 'dcp_selecionada disciplina',
            text: dcp_text,
            id: 'dcp' + dcpDetail['turma'],
            click: function (event) {
                $(this).remover();
            }
        });
        dcp.attr('data-co-dcp', dcpDetail['turma']);
        dcp.html(dcp.html().replace(/&lt;/g, "<").replace(/&gt;/g, ">")).tooltipster({theme: 'tooltipster-punk'});
        grade_dia = $('#' + dcp_target).closest('.grade').attr('id');
        dcp.insertBefore("#" + grade_dia + ' li.add_dcp');
        //$("#" + grade_dia + ' li.add_dcp').after(dcp);
        $('body').aj_dcp();
        return false;
    },
    remover: function () {
        tpGrade = $("#grade_form").attr('data-tp-grade');
        if (tpGrade === 'gr-inativa') {
            return false;
        }
        if ($(this).hasClass('dcp_selecionada')) {
            dcp = $(this);
            swal({
                title: "Remover disciplina?",
                text: "Deseja realmente remover esta disciplina?",
                type: "warning",
                showCancelButton: true,
                confirmButtonColor: "#DD6B55",
                confirmButtonText: "Remover",
                cancelButtonText: "Não, deixe como está"
            }, function (isConfirm) {
                if (isConfirm) {
                    reative = dcp.attr('data-co-dcp');
                    $('a[data-co-dcp=' + reative + ']').closest('li').show();
                    // remove a disciplina da grade
                    dcp.remove();
                    $('body').aj_dcp();
                }
            });
        }
    },
    editMsg: function () {
        msg_edit = $(this);
        $(this).unbind('editMsg');
        if ($("#edit-hint").length) {
            swal('Ooops...', 'Você não pode editar duas mensagens ao mesmo tempo.', "error");
            $(".cd-timeline-content p.editar").focus();
            return false;
        }
        tgt = $(this).closest('.cd-timeline-block');
        editor = tgt.find('.ds_msg');
        texto_antigo = editor.html();
        editor.addClass('editar').attr('contenteditable', 'true').focus();
        howto = $('<p>', {
            id: 'edit-hint'
        });
        tgt.find('.msg-opt').fadeOut('fast');
        howto.html('<small>Pressione ENTER para Salvar ou ESC para cancelar</small>').insertAfter(editor);
        editor.keydown(function (event) {
            if (event.keyCode === 13) {
                event.preventDefault(event);
                $("#edit-hint").remove();
                id_msg = tgt.attr('data-co-evt').replace('evt', '');
                ds_msg = editor.html();
                ds_msgURI = encodeURIComponent(ds_msg).replace('%EF%BB%BF', '');
                console.log(ds_msgURI);
                editor.removeClass('editar').attr('contenteditable', 'false');
                if (ds_msg === texto_antigo) {
                    tgt.find('.msg-opt').fadeIn('fast');
                } else {
                    $.ajax('./academico/alterarmsg/?op=edit&id=' + id_msg + '&msg=' + ds_msgURI).done(function (data) {
                        editor.html(data);
                        tgt.find('.msg-opt').fadeIn('fast');
                    });
                }
            }
            if (event.keyCode === 27) {
                event.preventDefault(event);
                $("#edit-hint").remove();
                editor.html(texto_antigo).removeClass('editar').attr('contenteditable', 'false');
                tgt.find('.msg-opt').fadeIn('fast');
            }
        });
        msg_edit.unbind('editMsg');
        return false;
    },
    removeMsg: function () {
        tgt = $(this).closest('.cd-timeline-block');
        id_msg = tgt.attr('data-co-evt').replace('evt', '');
        swal({
            title: "Excluir mensagem?",
            text: "Deseja realmente excluir esta mensagem?",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#DD6B55",
            confirmButtonText: "Excluir",
            cancelButtonText: "Não, deixe como está",
            closeOnConfirm: false
        }, function (isConfirm) {
            if (isConfirm) {
                $.ajax('./academico/alterarmsg/?op=remove&id=' + id_msg).done(function () {
                    tgt.remove();
                    swal('Removida', 'A mensagem foi removida', "success");
                });
            }
        });
        return false;
    }
});
$(document).ready(function () {
    $("#ctxgr").on('click', function (event) {
        event.preventDefault(event);
        $("#ctx-ativo").closest('a').trigger('click');
        $('.config').trigger('click');
        return false;
    });
    function dcpDetails(rListURL) {
        $('.fancybox-inner ul li a').on('click', function () {
            url_turma = $(this).attr('href');
            $('.dcp_dia').hide();
            $('.fancybox-inner').html('<center>Carregando...</center>')
                    .load(url_turma, function () {
                        $(this).css('height', 'auto');
                        $('.inc_dcp').on('click', function () {
                            $(this).ch_dcp();
                        });
                        $('.listar_dcp').on('click', function () {
                            $('.fancybox-inner').html('<center>Carregando...</center>')
                                    .load(rListURL, function () {
                                        dcpDetails(rListURL);
                                    });
                        });
                    });
            return false;
        });
    }
    function sendMsg() {
        $("#form-msg").on("submit", function () {
            msgBL = $("#ds_msg").val().replace(/\r\n|\r|\n/g,"<br />");
            smsg = encodeURI(msgBL);
            if (smsg === '') {
                swal('Ooops...', 'A mensagem não poderá ser enviada vazia.', "error");
                return false;
            }
            $('.dcp_dia').html('<p>&nbsp;</p><p align="center">Aguarde...</p>');
            $.ajax('./academico/enviarmsg/?ds_msg=' + smsg).done(function (data) {
                hse = data.replace(/[^0-9]/g, '');
                location.hash = '#evt' + hse;
                $('#grade-timeline').load('./academico/grade/montar/ #cd-timeline', function () {
                    $.fancybox.close();
                    ver_evento();
                });
            });
            return false;
        });
    }
    function getdcpbanco() {
        $.getJSON('./academico/listarbd', function (data) {
            $.each(data, function (key, value) {
                tgt = $("#" + value.dia).find('.grade_header');
                dcp_text = '<span class="remove-dcp">x</span><span class="no-dcp">' + value.disciplina + '</span><span class="professor">' +
                        value.professor + '</span>';
                dcp = $('<li>', {
                    class: 'dcp_selecionada disciplina',
                    id: 'dcpw' + value.turma,
                    click: function () {
                        $(this).remover();
                    }
                });
                if ($("#grade_form").hasClass('gr-ativa')) {
                    dcp.attr('title', 'Clique para remover');
                }
                dcp.css('display', 'none');
                dcp.html(dcp_text);
                dcp.attr('data-co-dcp', value.turma);
                dcp.insertAfter(tgt);
                dcp.fadeIn('slow');
            });
            $('.grade').each(function () {
                trgt = $(this).find('.grade_header');
                qtd_dcp = $(this).find('.disciplina').size();
                span_dcp = '<span class="i-plus"><i class="sonic-icon icon-ban-circle"></i></span>';
                if (qtd_dcp === 0) {
                    dcp_null = $('<li>', {
                        class: 'disciplina'
                    });
                    dcp_null.html(span_dcp);
                    dcp_null.css('display', 'none');
                    dcp_null.insertAfter(trgt);
                    dcp_null.fadeIn('slow');
                }
            });
            $('body').aj_dcp();
        });
    }


// Caso o redirecionamento preveja a exibicao de algum evento, rolar a pagina.
    function ver_evento() {
        if (window.location.hash !== '') {
            fh = window.location.hash.replace('#', '');
            evt = $('div[data-co-evt="' + fh + '"]');
            if (evt.length) {
                evt.children('.cd-timeline-content').css('background-color', '#FFF8B2');
                focusHash = $('div[data-co-evt="' + fh + '"]').offset().top;
                $('html, body').animate({scrollTop: focusHash - 80}, 1500, function () {
                    evt.children('.cd-timeline-content').animate({backgroundColor: '#F1F1F1'}, 800);
                });
            }
        }
        $('.msg-reply').on('click', function () {
            $("#msg").trigger('click');
            return false;
        });
        $(".msg-edit").on('click', function (event) {
            event.preventDefault(event);
            $(this).editMsg();
        });
        $(".msg-remove").on('click', function (event) {
            event.preventDefault(event);
            $(this).removeMsg();
            return false;
        });
    }
    $(window).on('load', function () {
        ver_evento();
        getdcpbanco();
    });
    // Adicionar tooltips nos objetos
    if (!isMobile()) {
        $(".tooltip, .add_dcp, .help-me, .cd-date").tooltipster({theme: 'tooltipster-punk'});
    }
    $(".help-me").click(function () {
        return false;
    });
    // na montagem da grade, ao clicar em um horario exibe uma janela modal que possibilita a escolha de uma disciplina.
    $('.add_dcp').click(function () {
        dsp_uso = $(this);
        dia = dsp_uso.closest('.dia').attr('id').replace('dia', '');
        ativa = [];
        $('#grade_form').find('.ih').each(function () {
            ih_val = $(this).val();
            if (ih_val !== '') {
                ativa.push(ih_val);
            }
        });
        fancyHref = './academico/listardcp?dia=' + dia + '&not=' + ativa.join(',');
        $.fancybox({
            type: 'ajax',
            href: fancyHref,
            minWidth: '80%',
            openEffect: 'elastic',
            closeEffect: 'elastic',
            ajax: {
                complete: function (jqXHR, textStatus) {
                    $('.fancybox-inner').attr('data-id-origem', dsp_uso.attr('id'));
                    dcpDetails(fancyHref);
                }
            }
        });
    });
    $('#template').fancybox({
        width: '300px',
        openEffect: 'elastic',
        closeEffect: 'elastic',
        ajax: {
            complete: function (jqXHR, textStatus) {
                $("#template a").click(function (e) {
                    e.preventDefault(e);
                    var prd = $(this).attr('data-periodo');
                    $.ajax('./academico/listar_tmp/?prd=' + prd).done(function (data) {
                        $('.grade').limpar();
                        $.each(data, function (key, value) {
                            tgt = $("#dia" + value.dia).find('.grade_header');
                            dcp_text = '<span class="remove-dcp">x</span><span class="no-dcp">' + value.disciplina + 
                                    '</span><span class="professor">' + value.professor + '</span>';
                            dcp = $('<li>', {
                                class: 'dcp_selecionada disciplina',
                                id: 'dcpw' + value.turma,
                                click: function () {
                                    $(this).remover();
                                }
                            });
                            if ($("#grade_form").hasClass('gr-ativa')) {
                                dcp.attr('title', 'Clique para remover');
                            }
                            dcp.css('display', 'none');
                            dcp.html(dcp_text);
                            dcp.attr('data-co-dcp', value.turma);
                            dcp.insertAfter(tgt);
                            dcp.fadeIn('slow');
                        });
                        $('body').aj_dcp();
                        $.fancybox.close();
                    });
                    return false;
                });
            }
        }
    });
    // Salva os dados da grade no banco de dados
    $("#submeter").click(function () {
        vars = $(this).closest('form').serialize();
        $.ajax({
            url: './academico/salvargrade',
            data: vars
        }).done(function (data) {
            msg = eval('(' + data + ')');
            swal(' ', msg.texto, msg.tipo);
            if ('evento' in msg) {
                location.hash = '#evt' + msg.evento;
                $('#grade-presencial').load('./academico/grade/montar/ #grade_principal');
                $('#diaead').load('./academico/grade/montar/ #grade_ead1');
                $('#grade-timeline').load('./academico/grade/montar/ #cd-timeline', function () {
                    ver_evento();
                    $('#grade_form').attr('class', 'gr-inativa').attr('data-tp-grade', 'gr-inativa');
                    $('.disciplina, #submeter, #limpar, #template').remove();
                    btn_print = $('<button>', {
                        class: 'botao',
                        id: 'imprimir'
                    });
                    btn_print.html('<i class="icon-print"></i>Versão para impressão');
                    btn_print.insertBefore("#msg");
                    getdcpbanco();
                });
            }
        });
        return false;
    });
    // Limpa todas as disciplinas que ja haviam sido escolhidas
    $("#limpar").click(function () {
        dcps = $('.dcp_selecionada').size();
        if (dcps === 0) {
            swal('Ooops...', 'Nenhuma disciplina a ser removida', "warning");
            return false;
        }
        swal({
            title: "Limpar a grade?",
            text: "Deseja realmente remover todas as disciplinas?",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#DD6B55",
            confirmButtonText: "Limpar",
            cancelButtonText: "Não, deixe como está",
            closeOnConfirm: false,
            closeOnCancel: false
        }, function (isConfirm) {
            if (isConfirm) {
                $('.grade').limpar();
                $('body').aj_dcp();
                swal("Limpamos!", dcps + " disciplina(s) removida(s).", "success");
            } else {
                swal("Cancelado", "Nenhuma informação foi alterada", "error");
            }
        });
        return false;
    });
    $("#msg").fancybox({
        type: 'ajax',
        minWidth: '405px',
        openEffect: 'elastic',
        closeEffect: 'elastic',
        ajax: {
            complete: function (jqXHR, textStatus) {
                sendMsg();
            }
        }
    });
    $("#imprimir").click(function () {
        window.print();
        return false;
    });
});